package com.ruoyi.system.service.impl;

import com.ruoyi.system.domain.CoContract;
import com.ruoyi.system.domain.CoUser;
import com.ruoyi.system.mapper.CoContractMapper;
import com.ruoyi.system.mapper.CoUserMapper;
import com.ruoyi.system.service.ICoContractService;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;

/**
 * 合同 服务层实现
 */
@Service
public class CoContractServiceImpl implements ICoContractService {
    @Autowired
    private CoContractMapper contractMapper;
    @Autowired
    private CoUserMapper userMapper;

    /**
     * 查询合同列表
     *
     * @param contract 合同信息
     * @return 合同集合
     */
    @Override
    public List<CoContract> selectContractList(CoContract contract) {
        return contractMapper.selectContractList(contract);
    }

    /**
     * 查询用户的合同列表
     *
     * @param userId 用户ID
     * @return 合同集合
     */
    @Override
    public List<CoContract> selectContractsByUserId(Long userId) {
        return contractMapper.selectContractsByUserId(userId);
    }

    /**
     * 通过合同ID查询合同
     *
     * @param contractId 合同ID
     * @return 合同对象信息
     */
    @Override
    public CoContract selectContractById(Long contractId) {
        return contractMapper.selectContractById(contractId);
    }

    /**
     * 新增合同信息
     *
     * @param contract 合同信息
     * @return 结果
     */
    @Override
    public int insertContract(CoContract contract) {
        return contractMapper.insertContract(contract);
    }

    /**
     * 修改合同信息
     *
     * @param contract 合同信息
     * @return 结果
     */
    @Override
    public int updateContract(CoContract contract) {
        return contractMapper.updateContract(contract);
    }

    /**
     * 删除合同信息
     *
     * @param contractId 合同ID
     * @return 结果
     */
    @Override
    public int deleteContractById(Long contractId) {
        return contractMapper.deleteContractById(contractId);
    }

    /**
     * 批量删除合同信息
     *
     * @param contractIds 需要删除的合同ID
     * @return 结果
     */
    @Override
    public int deleteContractByIds(Long[] contractIds) {
        return contractMapper.deleteContractByIds(contractIds);
    }

    /**
     * 更新合同状态
     *
     * @param contractId 合同ID
     * @param status 状态
     * @return 结果
     */
    @Override
    public int updateContractStatus(Long contractId, Integer status) {
        return contractMapper.updateContractStatus(contractId, status);
    }

    /**
     * 查询用户的合同统计信息
     * 
     * @param userId 用户ID，如果为null则查询所有用户的统计信息
     * @return 统计信息
     */
    @Override
    public Map<String, Object> selectContractStatsByUserId(Long userId)
    {
        return contractMapper.selectContractStatsByUserId(userId);
    }

    /**
     * 查询合同类型统计信息
     * 
     * @param userId 用户ID，如果为null则查询所有用户的统计信息
     * @return 统计信息列表
     */
    @Override
    public List<Map<String, Object>> selectContractTypeStats(Long userId)
    {
        return contractMapper.selectContractTypeStats(userId);
    }
}
